
#include <stdio.h>
#include <math.h>
#include "operation.h"

/*
	distance() rechnet die Distanz zwischen 2 Punkten aus,
	welche per Paramter übergeben werden, sqrt() wird durch Import von Libary math.h
	verwendet.
 */
float distance(struct point point1, struct point point2){

	float operation1=point1.x-point2.x;
	float operation2=point1.y-point2.y;
	float operation3=point1.z-point2.z;
	
	//Formel siehe Aufgabenblatt
	float ergebnis=sqrt(operation1*operation1+operation2*operation2+operation3*operation3);
	return ergebnis;
}

/*
	Rechnet die Fläche von 3 Punkten aus welche per Parameter übergeben werden
	sqrt() wird durch Import von Libary math.h verwendet.
 */
float areaTriangle(struct point point1, struct point point2, struct point point3){
	
	float a=distance(point1,point2);
	printf("Die Entfernung von Punkt 1 nach Punkt 2 ist: %f \n",a);
	float b=distance(point2,point3);
	printf("Die Entfernung von Punkt 2 nach Punkt 3 ist: %f \n",b);
	float c=distance(point3,point1);
	printf("Die Entfernung von Punkt 3 nach Punkt 1 ist: %f \n",c);
	float s=(a+b+c)/2; //Formel siehe Aufgabenblatt
	
	float flaeche=sqrt(s*(s-a)*(s-b)*(s-c)); //Formel siehe Aufgabenblatt	
	return flaeche;
	
}
/*
	readPoint() interagiert mit dem User, und liest ein Punkt ein.
	Die Nummer des Punktes wird per Integer als Parameter uebergeben
	danach werden die per scanf eingelesenen zahlen in ein struct vom
	Typ point geschrieben.
 */
struct point readPoint(int punktZahl) {
	
	float x;
	float y;
	float z;
	
    printf("Bitte geben Sie x von Punkt %i ein:\n",punktZahl);
	scanf("%f",&x);
	
	printf("Bitte geben Sie y von Punkt %i ein:\n",punktZahl);
	scanf("%f",&y);
	
	printf("Bitte geben Sie z von Punkt %i ein:\n",punktZahl);
	scanf("%f",&z);	
	
	//eingegebenen Zahlen werden in struct von Typ Point geschrieben
	struct point punkt={x,y,z};
	
	//Rückgabe des structs vom Typ point
	return punkt;
}